;
; C62DEV.SH Version 1.01 (C)1995,1996 HUDSON SOFT
; Ｉ／Ｏデバイス定義 アセンブラ用ヘッダーファイル(C62DEV.SH)
;
	ifndef	_C62DEV_SH_
_C62DEV_SH_	equ	1
;
; <<< New Tekkannon >>> (HuC6261)
;
;define I/O port
;
IO_NT		equ	$0300
;
DEV_NT_AR	equ	0
DEV_NT_SR	equ	0
DEV_NT_DR	equ	4
;
IO_NT_AR	equ	IO_NT + DEV_NT_AR	;レジスタアドレス設定
IO_NT_SR	equ	IO_NT + DEV_NT_SR	;ステータス
IO_NT_DR	equ	IO_NT + DEV_NT_DR	;データ R/W
;
;
;define bit string port
;
BS_NT_RR	equ	$a0000000	;ビットストリング リードポート
BS_NT_WR	equ	$b0000000	;ビットストリング ライトポート
;
;define register name
;
_NT_CR		equ	$00	;コントロール
_NT_CPA		equ	$01	;カラーパレットアドレス
_NT_CPW		equ	$02	;カラーパレットデータライト
_NT_CPR		equ	$03	;カラーパレットデータリード
_NT_CPO0	equ	$04	;カラーパレット オフセット＃０
_NT_CPO1	equ	$05	;カラーパレット オフセット＃１		
_NT_CPO2	equ	$06	;カラーパレット オフセット＃２
_NT_CPO3	equ	$07	;カラーパレット オフセット＃３
_NT_PRI0	equ	$08	;プライオリティー＃０
_NT_PRI1	equ	$09	;プライオリティー＃１
_NT_CRMY	equ	$0a	;クロマキー Ｙ
_NT_CRMU	equ	$0b	;クロマキー Ｕ
_NT_CRMV	equ	$0c	;クロマキー Ｖ
_NT_FIXC	equ	$0d	;固定カラー
_NT_CELCR	equ	$0e	;セロファンコントロール
_NT_CELSP	equ	$0f	;スプライト セロファン個別設定
_NT_CEL1A	equ	$10	;セロファン係数 １Ａ
_NT_CEL1B	equ	$11	;セロファン係数 １Ｂ
_NT_CEL2A	equ	$12	;セロファン係数 ２Ａ
_NT_CEL2B	equ	$13	;セロファン係数 ２Ｂ
_NT_CEL3A	equ	$14	;セロファン係数 ３Ａ
_NT_CEL3B	equ	$15	;セロファン係数 ３Ｂ
;
;
; <<< 7UP >>> (HuC6270)
;
;define I/O port
;
IO_70A		equ	$0400
IO_70B		equ	$0500
;
DEV_70_AR	equ	0
DEV_70_SR	equ	0
DEV_70_DR	equ	4
;
IO_70A_AR	equ	IO_70A + DEV_70_AR	;7UP-A レジスタアドレス設定
IO_70A_SR	equ	IO_70A + DEV_70_SR	;7UP-A ステータス
IO_70A_DR	equ	IO_70A + DEV_70_DR	;7UP-A データ
IO_70B_AR	equ	IO_70B + DEV_70_AR	;7UP-B レジスタアドレス設定
IO_70B_SR	equ	IO_70B + DEV_70_SR	;7UP-B ステータス
IO_70B_DR	equ	IO_70B + DEV_70_DR	;7UP-B データ
;
;
;define bit string port
;
BS_70A_RR	equ	$a4000000	;7UP-Aビットストリング リードポート
BS_70A_WR	equ	$b4000000	;7UP-Aビットストリング ライトポート
BS_70B_RR	equ	$a8000000	;7UP-Bビットストリング リードポート
BS_70B_WR	equ	$b8000000	;7UP-Bビットストリング ライトポート
;
;define register name
;
_70_MAWR	equ	$00	;メモリアドレス ライト
_70_MARR	equ	$01	;メモリアドレス リード
_70_VWR		equ	$02	;ＶＲＡＭデータ ライト
_70_VRR		equ	$02	;ＶＲＡＭデータ リード
_70_CR		equ	$05	;コントロール
_70_RCR		equ	$06	;ラスタ検出
_70_BXR		equ	$07	;ＢＧＸスクロール
_70_BYR		equ	$08	;ＢＧＹスクロール
_70_MWR		equ	$09	;メモリ幅
_70_HSR		equ	$0a	;水平同期
_70_HDR		equ	$0b	;水平表示
_70_VPR		equ	$0c	;垂直同期
_70_VDW		equ	$0d	;垂直表示
_70_VCR		equ	$0e	;垂直表示エンド位置
_70_DCR		equ	$0f	;ＤＭＡコントロール
_70_SOUR	equ	$10	;ＤＭＡソースアドレス
_70_DESR	equ	$11	;ＤＭＡデスティネーション
_70_LENR	equ	$12	;ＤＭＡブロック長
_70_DVSSR	equ	$13	;ＤＭＡ ＶＲＡＭ−ＳＡＴＢソース
;
;
; <<< Rainbow >>> (HuC6271)
;
;define I/O port
;
IO_RA		equ	$0200
;
DEV_RA_SCROLL	equ	$0
DEV_RA_CR	equ	$4
DEV_RA_NRLY	equ	$8
DEV_RA_NRLU	equ	$c
DEV_RA_NRLV	equ	$10
DEV_RA_HSYNC	equ	$14
;
IO_RA_SCROLL	equ	IO_RA + DEV_RA_SCROLL	;水平スクロール lowバイト
IO_RA_SCROLLH	equ	IO_RA + DEV_RA_SCROLL+2	;水平スクロール highバイト
IO_RA_CR	equ	IO_RA + DEV_RA_CR	;コントロール
IO_RA_NRLY	equ	IO_RA + DEV_RA_NRLY	;ヌルラン Ｙ成分
IO_RA_NRLU	equ	IO_RA + DEV_RA_NRLU	;ヌルラン Ｕ成分
IO_RA_NRLV	equ	IO_RA + DEV_RA_NRLV	;ヌルラン Ｖ成分
IO_RA_HSYNC	equ	IO_RA + DEV_RA_HSYNC	;水平同期信号調整
;
;
;
; <<< King >>> (HuC6272)
;
;define I/O port
;
IO_KING		equ	$0600
;
DEV_KING_AR	equ	0
DEV_KING_SR	equ	0
DEV_KING_SRL	equ	0
DEV_KING_SRH	equ	2
DEV_KING_DR	equ	4
DEV_KING_DRL	equ	4
DEV_KING_DRH	equ	6
;
IO_KING_AR	equ	IO_KING + DEV_KING_AR	;レジスタアドレス設定
IO_KING_SR	equ	IO_KING + DEV_KING_SR	;ステータス
IO_KING_SRL	equ	IO_KING + DEV_KING_SRL	;ステータス(low half word)
IO_KING_SRH	equ	IO_KING + DEV_KING_SRH	;ステータス (high half word)
IO_KING_DR	equ	IO_KING + DEV_KING_DR	;データ
IO_KING_DRL	equ	IO_KING + DEV_KING_DRL	;データ (low half word)
IO_KING_DRH	equ	IO_KING + DEV_KING_DRH	;データ (high half word)
;
;define bit string port
;
BS_KING_RR	equ	$ac000000	;ビットストリング リードポート
BS_KING_WR	equ	$bc000000	;ビットストリング ライトポート
;
;define register name
;
;ＳＣＳＩ
;
_SCSI_ODATA	equ	$00	;アウトプットデータ
_SCSI_CDATA	equ	$00	;カレントデータ
_SCSI_ICMD	equ	$01	;イニシエータデータ
_SCSI_MODE	equ	$02	;モード
_SCSI_TCMD	equ	$03	;ターゲットコマンド
_SCSI_SELECT	equ	$04	;セレクトイネーブル
_SCSI_CBSTAT	equ	$04	;カレントバスステータス
_SCSI_DMASEND	equ	$05	;スタートＤＭＡセンド
_SCSI_BUSSTAT	equ	$05	;バス ＆ ステータス
_SCSI_PSEDMA	equ	$05	;疑似ＤＭＡ リード・ライト(IO_KING_DRH)
_SCSI_TDMASEND	equ	$06	;スタートＤＭＡ ターゲットレシーブ
_SCSI_IDATA	equ	$06	;インプットデータ
_SCSI_DMARCV	equ	$07	;スタートＤＭＡ イニシエーターレシーブ
_SCSI_IRQRESET	equ	$07	;リセットインタラプト
_CDROM_SUBCTRL	equ	$08	;サブコード制御
_CDROM_SUBDATA	equ	$08	;サブコードデータ
_SCSI_DMASTART	equ	$09	;ＤＭＡスタートアドレス
_SCSI_DMACNT	equ	$0a	;ＤＭＡバイトカウント
_SCSI_DMACR	equ	$0b	;ＤＭＡコントロール
;
;ＫＲＡＭ
;
_KRAM_ARR	equ	$0c	;リードアドレス
_KRAM_CARR	equ	$0c	;カレントリードアドレス
_KRAM_AWR	equ	$0d	;ライトアドレス
_KRAM_CAWR	equ	$0d	;カレントライトアドレス
_KRAM_DATA	equ	$0e	;Ｒ／Ｗデータ
_KRAM_PAGE	equ	$0f	;ページ設定
_KRAM_MODE	equ	$61	;モード設定
;
;ＫＢＧ
;
_BG_MODE	equ	$10	;ＢＧ面 形式設定
_BG_PRI		equ	$12	;ＢＧ面 プライオリティ設定
_BG_MPAR	equ	$13	;マイクロプログラム ロードアドレス
_BG_MPDR	equ	$14	;マイクロプログラム データ
_BG_MPCR	equ	$15	;マイクロプログラム コントロール
_BG_SSCR	equ	$16	;副画面 茶筒設定
_BG_BAT0	equ	$20	;ＢＧ０ 主画面 ＢＡＴアドレス 
_BG_CG0		equ	$21	;ＢＧ０ 主画面 ＣＧアドレス
_BG_SBAT0	equ	$22	;ＢＧ０ 副画面 ＢＡＴアドレス 
_BG_SCG0	equ	$23	;ＢＧ０ 副画面 ＣＧアドレス
_BG_BAT1	equ	$24	;ＢＧ１ 主副画面 ＢＡＴアドレス 
_BG_CG1		equ	$25	;ＢＧ１ 主副画面 ＣＧアドレス
_BG_BAT2	equ	$28	;ＢＧ２ 主副画面 ＢＡＴアドレス 
_BG_CG2		equ	$29	;ＢＧ２ 主副画面 ＣＧアドレス
_BG_BAT3	equ	$2a	;ＢＧ３ 主副画面 ＢＡＴアドレス 
_BG_CG3		equ	$2b	;ＢＧ３ 主副画面 ＣＧアドレス
_BG_SIZE0	equ	$2c	;ＢＧ０ サイズ
_BG_SIZE1	equ	$2d	;ＢＧ１ サイズ
_BG_SIZE2	equ	$2e	;ＢＧ２ サイズ
_BG_SIZE3	equ	$2f	;ＢＧ３ サイズ
_BG_BSX0	equ	$30	;ＢＧ０ 水平スクロール
_BG_BSY0	equ	$31	;ＢＧ０ 垂直スクロール
_BG_BSX1	equ	$32	;ＢＧ１ 水平スクロール
_BG_BSY1	equ	$33	;ＢＧ１ 垂直スクロール
_BG_BSX2	equ	$34	;ＢＧ２ 水平スクロール
_BG_BSY2	equ	$35	;ＢＧ２ 垂直スクロール
_BG_BSX3	equ	$36	;ＢＧ３ 水平スクロール
_BG_BSY3	equ	$37	;ＢＧ３ 垂直スクロール
_BG_AFINA	equ	$38	;アフィン係数 Ａ
_BG_AFINB	equ	$39	;アフィン係数 Ｂ
_BG_AFINC	equ	$3a	;アフィン係数 Ｃ
_BG_AFIND	equ	$3b	;アフィン係数 Ｄ
_BG_AFINX	equ	$3c	;アフィン係数 中心 Ｘ座標
_BG_AFINY	equ	$3d	;アフィン係数 中心 Ｙ座標
;
;ＫＲ転送
;
_KR_CR		equ	$40	;転送コントロール
_KR_TSA		equ	$41	;転送データ開始アドレス
_KR_TSR		equ	$42	;転送開始ラスタ
_KR_LEN		equ	$43	;転送ブロック数
;
_RASTER_COUNT	equ	$44	;ラスタ監視
;
;ＫＳ転送
;
_KS_MODE	equ	$50	;再生モード
_KS_CR0		equ	$51	;転送コントロール ＃０
_KS_CR1		equ	$52	;転送コントロール ＃１
_KS_STAT	equ	$53	;ステータス
_KS_START0	equ	$58	;スタートアドレス ＃０
_KS_END0	equ	$59	;エンドアドレス ＃０
_KS_HALF0	equ	$5a	;ハーフアドレス ＃０
_KS_START1	equ	$5c	;スタートアドレス ＃１
_KS_END1	equ	$5d	;エンドアドレス ＃１
_KS_HALF1	equ	$5e	;ハーフアドレス ＃１
;
;
; < SoundBox > (HuC6230)
;
;define I/O port
;
IO_SB		equ	$0100
;
DEV_SB_CHSEL	equ	$0
DEV_SB_MVOL	equ	$2
DEV_SB_FRQL	equ	$4
DEV_SB_FRQH	equ	$6
DEV_SB_CHVOL	equ	$8
DEV_SB_PAN	equ	$a
DEV_SB_WAVE	equ	$c
DEV_SB_NOISE	equ	$e
DEV_SB_LFOFRQ	equ	$10
DEV_SB_LFOCR	equ	$12
DEV_SB_ADP_CR	equ	$20
DEV_SB_ADP_VOLL0 equ	$22
DEV_SB_ADP_VOLR0 equ	$24
DEV_SB_ADP_VOLL1 equ	$26
DEV_SB_ADP_VOLR1 equ	$28
DEV_SB_PCM_VOLL	equ	$2a
DEV_SB_PCM_VOLR	equ	$2c
;
IO_SB_CHSEL	equ	IO_SB + DEV_SB_CHSEL	;チャンネルセレクト
IO_SB_MVOL	equ	IO_SB + DEV_SB_MVOL	;メインボリューム
IO_SB_FRQL	equ	IO_SB + DEV_SB_FRQL	;周波数 微調
IO_SB_FRQH	equ	IO_SB + DEV_SB_FRQH	;周波数 祖調
IO_SB_CHVOL	equ	IO_SB + DEV_SB_CHVOL	;ｃｈボリューム
IO_SB_PAN	equ	IO_SB + DEV_SB_PAN	;Ｌ・Ｒボリューム
IO_SB_WAVE	equ	IO_SB + DEV_SB_WAVE	;波形データ
IO_SB_NOISE	equ	IO_SB + DEV_SB_NOISE	;ノイズ コントロール・周波数
IO_SB_LFOFRQ	equ	IO_SB + DEV_SB_LFOFRQ	;ＬＦＯ周波数
IO_SB_LFOCR	equ	IO_SB + DEV_SB_LFOCR	;ＬＦＯコントロール
IO_SB_ADP_CR	equ	IO_SB + DEV_SB_ADP_CR	;ＡＤＰＣＭ コントロール
IO_SB_ADP_VOLL0	equ	IO_SB + DEV_SB_ADP_VOLL0 ;ＡＤＰＣＭ ボリューム Lch #0
IO_SB_ADP_VOLR0	equ	IO_SB + DEV_SB_ADP_VOLR0 ;ＡＤＰＣＭ ボリューム Rch #0
IO_SB_ADP_VOLL1	equ	IO_SB + DEV_SB_ADP_VOLL1 ;ＡＤＰＣＭ ボリューム Lch #1
IO_SB_ADP_VOLR1	equ	IO_SB + DEV_SB_ADP_VOLR1 ;ＡＤＰＣＭ ボリューム Rch #1
IO_SB_PCM_VOLL	equ	IO_SB + DEV_SB_PCM_VOLL	;ＰＣＭ ボリューム Ｌｃｈ
IO_SB_PCM_VOLR	equ	IO_SB + DEV_SB_PCM_VOLR	;ＰＣＭ ボリューム Ｒｃｈ
;
; <<< system board >>>
;
;[ I/O (IOC) ]
IO_IO_RESET	equ	$0700	;R/W 拡張バスリセットレジスタ
				;		(0=normal, 1=reset(level))
IO_IO_7AR_A	equ	$0c00	;R   7up A アドレス保持レジスタ
IO_IO_7AR_B	equ	$0c40	;R   7up B アドレス保持レジスタ
IO_IO_VERSION	equ	$0cc0	;R   ＧＡバージョン判定レジスタ
IO_IO_REFMASK	equ	$0d00	;R/W リフレッシュ・マスクレジスタ
IO_IO_WAIT	equ	$0d40	;R/W Ｉ／Ｏウエイト数設定レジスタ
IO_IO_KCS	equ	$0d80	;W   K_port Clock 0:1/128, 1:1/256
;
; バックアップメモリは PC-FXGA では物理的には実装されていません。PC-FXGA では
; ソフトウェアで仮想的に実装されています。従って、以下の I/O アドレスを直接に
; アクセスすると PC-FXGA 上で動作しない事になります。
; バックアップメモリのアクセスは、必ずバックアップメモリアクセス用ライブラリの
; filelib.a を使用して下さい。
IO_IO_BKUP	equ	$0c80	;R/W バックアップメモリ・アクセス許可レジスタ
BIT_BKUP_BRAM	equ	$0001	;IO_IO_BKUP Bit position of BackUpMemory
BIT_BKUP_CARD	equ	$0002	;IO_IO_BKUP Bit position of BackUpCARD
;
;[ Key I/O PORT ]
IO_K0_CR	equ	$0000	;W	Keyport0 Contorol
IO_K0_SR	equ	$0000	;R	  Status
IO_K0_DATA	equ	$0040	;R/W	  Data
IO_K0_DL	equ	$0040	;R/W	  Data Low 16bits
IO_K0_DH	equ	$0042	;R/W	  Data High 16bits
IO_K1_CR	equ	$0080	;W	Keyport1 Contorol
IO_K1_SR	equ	$0080	;R	  Status
IO_K1_DATA	equ	$00c0	;R/W	  Data
IO_K1_DL	equ	$00c0	;R/W	  Data Low 16bits
IO_K1_DH	equ	$00c2	;R/W	  Data High 16bits
;
BIT_K_TRG	equ	1	;Bit of IO_K?_CR/SR 転送要求ビット
BIT_K_MOD	equ	2	;Bit of IO_K?_CR/SR クリア信号の付加要求
				;			(マルチタップ等)
BIT_K_IOS	equ	4	;Bit of IO_K?_CR/SR 入出力方向の撰択
				;			0:OUTPUT, 1:INPUT
BIT_K_END	equ	8	;Bit of IO_K?_SR 転送終了表示ビット
;
	ifndef	SIG_MOUSE
SIG_MOUSE	equ	$0d	;Mouse
	endif
SIG_TAP		equ	$0e	;Malti Tap Signature
SIG_PAD		equ	$0f	;6B PAD Signature
;
;[ timer (TMC) ]
IO_TIMER_TCR	equ	$0f00	;タイマ 制御・状態レジスタ
IO_TIMER_TMR	equ	$0f80	;タイマ 初期値レジスタ
IO_TIMER_DWC	equ	$0fc0	;タイマ ダウンカウンタ
;
;[ Interrput (ITC) ]
IO_ADRERR_CLR	equ	$0e00	;W   アドレスエラークリアレジスタ(SESCC)
IO_IRQ_STAT	equ	$0e00	;R   割り込みステータスレジスタ(ISR)
IO_IRQ_MASK	equ	$0e40	;R/W 割り込みマスクレジスタ(IMR)
IO_IRQ_LEVELL	equ	$0e80	;R/W 割り込みレベル設定レジスタ(ILR0)
				;			7A,KING,7B,SIO(73)
IO_IRQ_LEVELH	equ	$0ec0	;R/W 割り込みレベル設定レジスタ(ILR1)
				;			TIMER,EXT,KP
;
BIT_IRQM_73	equ	$0001	;ISR/IMR Bit Position of HuC6273 I/O Int
BIT_IRQM_SIO	equ	$0001	;ISR/IMR Bit Position of Serial I/O Int
BIT_IRQM_7B	equ	$0002	;ISR/IMR Bit Position of HuC6270 #B Int
BIT_IRQM_KING	equ	$0004	;ISR/IMR Bit Position of HuC6272 Int
BIT_IRQM_7A	equ	$0008	;ISR/IMR Bit Position of HuC6270 #A Int
BIT_IRQM_KP	equ	$0010	;ISR/IMR Bit Position of K I/O Int
BIT_IRQM_EXT	equ	$0020	;ISR/IMR Bit Position of EXTERNAL Int
BIT_IRQM_TMI	equ	$0040	;ISR/IMR Bit Position of Timer Int
BIT_IRQM_AERR	equ	$0080	;ISR/IMR Bit Position of Address Error Int
;
;
;割り込みベクタ
;
IRQVEC_TOP	equ	$7fc0
IRQVEC_73	equ	IRQVEC_TOP + 4*0
IRQVEC_EXT	equ	IRQVEC_TOP + 4*0
IRQVEC_70B	equ	IRQVEC_TOP + 4*1
IRQVEC_KING	equ	IRQVEC_TOP + 4*2
IRQVEC_70A	equ	IRQVEC_TOP + 4*3
IRQVEC_KP	equ	IRQVEC_TOP + 4*4
IRQVEC_TIMER	equ	IRQVEC_TOP + 4*5
IRQVEC_6	equ	IRQVEC_TOP + 4*6
IRQVEC_7	equ	IRQVEC_TOP + 4*7
;
IRQVEC_TRAP0X	equ	IRQVEC_TOP + 4*8
IRQVEC_SFTRST	equ	IRQVEC_TOP + 4*9
IRQVEC_10	equ	IRQVEC_TOP + 4*10
IRQVEC_11	equ	IRQVEC_TOP + 4*11
IRQVEC_MATH	equ	IRQVEC_TOP + 4*12
IRQVEC_13	equ	IRQVEC_TOP + 4*13
IRQVEC_TRAP1X	equ	IRQVEC_TOP + 4*14
IRQVEC_SYSERR	equ	IRQVEC_TOP + 4*15
;
;
	endif		;!_C62DEV_SH_
